package emu.decvices.bus;

/**
 * 连接在总线上的设备基类
 */
public abstract class BusDevice implements Device {
    private BUS bus;

    public void setBus(BUS bus){
        this.bus = bus;
    }

    /**
     * 从总线指定位置读取1个字节
     * @param address
     * @return 返回int值，该值"低8位"有效，返回-1则表示没有设备响应读取
     */
    public int fromBusRead(int address) {
        return bus.read(address&0xFFFF);
    }

    public void toBusWrite(int address, int data) {
        bus.write(address&0xFFFF,data);
    }

    /**
     * 从设备指定路径上读取数据
     * @param address 地址是2字节的
     * @return 返回对应字节上的1字节数据，-1则表示没有数据
     */
    public int fromDeviceRead(int address) {
        return -1;//默认实现不返回任何值
    }

    /**
     * 将指定设备对应位置上写入数据
     * @param address
     * @param data
     */
    public boolean toDeviceWrite(int address,int data) {
        //默认实现不做任何事
        return false;
    }
}
